
package com.iotp.service.role;

import com.iotp.entity.role.Role;

import java.util.List;

/**
 * 系统角色业务接口
 * @author Assassin
 */
public interface RoleService {

	// Methods

   /**
	* 添加系统角色
	* @param roleType 标识信息-角色类型
	* @param orgId 标识信息-机构Id
	* @param orgCode 标识信息-机构编码
	* @param roleName 基本信息-角色名称
	* @param roleDesc 基本信息-角色说明
	* @param menuIds 系统菜单Ids
	* @param authorityIds 系统权限Ids
	* @return Long roleId 添加后的数据库主键值
	*/
	public Long add(Integer roleType, Long orgId, String orgCode, String roleName, String roleDesc, String menuIds, String authorityIds);

   /**
	* 删除系统角色
	* @param roleId 主键值
	*/
	public void delete(Long roleId);

   /**
	* 更新系统角色
	* @param roleId 标识信息-角色Id[主键值]
	* @param orgId 标识信息-机构Id
	* @param roleStatus 状态信息-角色数据状态
	* @param isDel 状态信息-是否删除[1-是 | 0-否]
	* @param roleOrder 状态信息-角色排序
	* @param roleName 基本信息-角色名称
	* @param roleDesc 基本信息-角色说明
	* @param menuIds 菜单Ids
	* @param authorityIds 系统权限Ids
	*/
	public void edit(Long roleId, Long orgId, Integer roleStatus, Integer isDel, Integer roleOrder, String roleName, String roleDesc, String menuIds, String authorityIds);

   /**
	* 主键查询系统角色
	* @param role 参数实体
	* @return Role 实体
	*/
	public Role queryById(Long roleId);

   /**
	* 根据条件查询系统角色列表
	* @param roleId 标识信息-角色Id[主键值]
	* @param roleCode 标识信息-角色编码
	* @param roleType 标识信息-角色类型
	* @param orgId 标识信息-机构Id
	* @param roleStatus 状态信息-角色数据状态
	* @param isDel 状态信息-是否删除[1-是 | 0-否]
	* @param roleOrder 状态信息-角色排序
	* @param roleName 基本信息-角色名称
	* @param roleDesc 基本信息-角色说明
	* @param createTime 时间信息-创建时间
	* @param updateTime 时间信息-更新时间[初始化=NULL]
	* @return List<Role> 实体List
	*/
	public List<Role> queryList(Long roleId, String roleCode, Integer roleType, Long orgId, Integer roleStatus, Integer isDel, Integer roleOrder, String roleName, String roleDesc, Long createTime, Long updateTime);

	/**
	 * 编辑角色状态（逻辑删除 | 恢复）
	 * @param roleId 角色Id
	 * @param isDel 是否删除状态
	 */
	public void editIsDel(Long roleId, Integer isDel);
	
	/**
	 * 查询用户的角色信息
	 * @param userId 用户Id
	 * @return List<Role>
	 */
	public List<Role> queryRoleByUserId(Long userId);
	
	/**
	 * 根据属性验证角色是否存在
	 * @param orgId 机构Id
	 * @param roleId 角色Id
	 * @param roleName 角色名称
	 * @return List<Role>
	 */
	public List<Role> queryIsRoleExist(Long orgId, Long roleId, String roleName);
	
}